package com.thesis.manage.common.elasticsearch;

import com.thesis.manage.common.entity.AbstractBaseEntity;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;

/**
 * @author php
 * @date 2017/11/17
 * elasticsearch公共接口
 */
public interface ElasticsearchService<T extends AbstractBaseEntity> {

    /**
     * 保存对象
     *
     * @param t t
     * @return String
     */
    String save(T t);

    /**
     * 更新对象
     *
     * @param t t
     * @return String
     */
    String update(T t);

    /**
     * 删除对象
     *
     * @param id id
     */
    void deleteById(String id);

    /**
     * 查询所有（现在10000条）
     *
     * @return list
     */
    List<T> queryAll();

    /**
     * 根据id查找实体
     *
     * @param id id
     * @return T
     */
    T findById(String id);

    /**
     * 关键词分页查找
     *
     * @param pageable 分页
     * @param keyword  关键字
     * @return Page
     */
    Page<T> queryByPage(Pageable pageable, String keyword);

    /**
     * 根据对象分页查找
     *
     * @param pageable 分页
     * @param t        对象
     * @return page
     */
    Page<T> queryByPage(Pageable pageable, T t);
}
